Houdini 13.0 Цифровые активы

Введение

Начиная с Houdini 12, Вы можете квалифицировать внутренние имена своих активов с идентификатором пространства имен и строкой версии.

Пространство имен

Идентификатор пространства имен позволяет Вам называть свои активы, не волнуясь об использовании того же самого имени встроенным узлом Houdini или сторонним активом, который Вы могли бы использовать когда-нибудь. (Отметьте, что это относится только к внутреннему названию (internal name) узла..., Вы можете всегда использовать любое имя, для удобочитаемого ярлыка, который появляется в пользовательском интерфейсе.)

Например, Sasha’s Unbelievably Natural Discount Animation Emporium мог бы произвести узел поверхности для, копирования геометрии, и назвать его com.sundae::copy. Это отличается от встроенного узла copy так же как от узла Joe’s Geometry Hut’scom.joesgeohut::copy.

Это полезно при создании активов, которые Вы планируете распределить между другими пользователями. Также полезно позволить отдельным художникам в одном проекте создавать свои собственные активы, не волнуясь о конфликтах имен, когда позже их активы будут использоваться вместе.

Полезное соглашение, гарантирующее Вам использование уникальное имя пространства имен, это DNS адрес Вашего веб-сайта наоборот. Например, если бы веб-сайт Ады Houdini был бы houdini.bacon.org, она использовала бы org.bacon.houdini в качестве пространства имен для ее активов. Вы можете использовать дополнительные соглашения, такие как добавление имени создателя актива, например org.bacon.houdini.ada.

Версии

Строка версии (version string) позволяет Вам создавать многократные независимые версии актива, не имея необходимость изменять “основное название” (то есть, не нужно теперь называть узлы, copy, new_copy, newer_copy, и так далее). Если Саша хочет полностью изменить интерфейс и/или содержание ее актива copy она может создать актив, названный com.sade::copy::2.0. Случаи старой версии все еще будут работать и использовать старое содержание, в то время как пользователи, устанавливающие новый узел, получат последнюю версию.

Версия может содержать только числа и периоды (.). Например, myasset::2, myasset::2.1, myasset::19.1.3, но не myasset::2a или myasset::alpha.

Части имени актива

Общая форма “именования” спецификации узла - [namespace::]node_name[::version].

Примечание

Некоторые команды сценариев требуют категории узла и имени узла вместе, (например Object/geo, Sop/copy, Dop/popsolver). Чтобы использовать именование с этими командами, используйте форму [namespace::]node_category/node_name[::version]. Например, com.sundae::Sop/copy::2.0.

Советы

Чтобы... Надо
Определить пространство имен и/или версию актива

Когда Вы создаете цифровой актив из узла   (используя RMB > Create Digital Asset на узле в редакторе сетей), Вы можете включать пространство имен и/или версию как часть имени актива в поле Operator Name диалогового окна “Create New Digital Asset”.

Создать новую версию актива
  1. Выберите Windows > Operator Type Manager чтобы открыть менеджер актива.
  2. RMB на активе и выберите Copy.

  3. Увеличьте номер версии в поле Operator Name диалога “Copy Operator Type”.

Ссылки к типам узлов в скриптах

Когда Вы обращаетесь к типам узла в скриптах, Вы можете использовать “полное” имя (например com.sundae::vines::2.0) чтобы обратиться к определенному узлу и точной версии, или использовать "неоднозначную" ссылку (например, vines) и  Houdini будет спрашивать, какой узел Вы хотите. Неоднозначные ссылки часто полезны, если Вы хотите всегда использовать последнюю версию актива, или чтобы позволить пользователю выбирать другой актив в другом пространстве имен, без необходимости изменять все Ваши скрипты.

В случаях, где неопределенное имя может обратиться к нескольким узлам, Houdini использует следующие правила выбора.

  • Если Вы не определяете номер версии, Houdini выбирает узел с самым высоким номером версии. Узел, который создавался без части "version" на конце имени, как обычно, считается самой низкой версией.
  • Houdini выбирает узлы, которые limited to the current scope перед узлами, которые не scoped.
  • Houdini выбирает узлы, создаваемые без пространства имен перед узлами, у которых есть пространство имен.
  • Houdini всегда предпочитает имена или пространства имен, перечисленные в переменной окруженияHOUDINI_OPNAMESPACE_HIERARCHY. Вы можете установить в эту переменную разделенный пробелом список имен пространства имен и/или имен узлов, чтобы управлять разрешением неоднозначных имен. Пространства имен, расположенные первыми в списке, используются перед пространствами имен, которые в списке позже, или вообще не в списке.

    Например, если Ваш HOUDINI_OPNAMESPACE_HIERARCHY содержит...

        com.sundae org.bacon.houdini
        

    Тогда, если Houdini знает об активах, названных vines, org.bacon.houdini::vines, и com.sundae::vines, и Вы используете команду...

    opadd vines
    

    ...Houdini будет использовать com.sundae::vinesтак как это самое первое имя в списке HOUDINI_OPNAMESPACE_HIERARCHY.

    Вы можете добавить полное имя к списку, чтобы заставить это иметь приоритет даже при более поздней версии. Например, добавление com.sundae::vines::1.0 к списку заставят Houdini это использовать для неоднозначной ссылки vines даже еслиcom.sundae::vines::2.0 доступно.

    Вы можете использовать подстановочные знаки (* и ?) для имен в списке HOUDINI_OPNAMESPACE_HIERARCHY.

Подсказка

Чтобы напрямую обратиться к узлу без части пространства имен, используйте ::node_name. Например, ::copy. Чтобы однозначно обратиться к узлу без части версии, используйте node_name::. Например, copy::.

У некоторых команд/методов сценариев есть явная опция, чтобы отключить разрешение пространства имен иHOUDINI_OPNAMESPACE_HIERARCHY. Например, opadd имеет опцию -e, чтобы потребовать точного имени оператора. Точно так же у, hou.Node.createNode есть параметр exact_type_name.

Scoping подсетей

Вы можете определить для имени актива, что оно допустимо только в пределах определенного типа подсети, используя форму[Node_category/node_name::]node_spec. Например, если у Вас есть актив com.example::mysop, Вы можете определить, что это допустимо только в пределах SOP Solver DOP, назвав это Dop/sopsolver::com.example::mysop. Это препятствовало бы тому, чтобы пользователи добавили актив в сеть Geometry object (Object/geo) .

Это может быть полезно для уменьшения беспорядка в меню Tab ограничивая контексты, в которых появляются специализированные активы.

Фильтрация предпочтений

Выберите Edit > Preferences > Shelves and Tab Menu и используйте Tab menu operator name space filtering параметр, чтобы управлять тем, какие активы появляются на полке и в меню Tab.

Поле версии

Окно свойств типа оператора актива содержит поле Version. Это поле перенесено из предыдущих версий Houdini, где оно функционировало больше как аннотация. У него нет никакого отношения к части имени типа узла ::version.

Команда HScript otversion эквивалентна методам питона hou.NodeType.version и hou.NodeType.setVersionпозволяют Вам получать и устанавливать это поле версии. Команда HScript opparm -V и метод hou.Node.syncNodeVersionIfNeeded могут также вызвать узлы Sync Node Version event handler скрипт который будет вызван.